Тестирование разработанной модели¶

Импортирование библиотек¶

In [4]:
# библиотека для работы с датафреймами
import pandas as pd

# библиотека для визуализации изображений и графиков
import matplotlib.pyplot as plt

# библиотека с предобученной моделью YOLO
from ultralytics import YOLO

# импортируем ранее реализованные функции
from function import get_photo, face_recognition

# библиотека для работы с изображениями
import cv2

Загрузка данных¶

Инициализируем необходимые компоненты (модель детекции, датафрейм с эмбеддингами)

In [58]:
# модель детекции
model = YOLO(r'D:\Helper\MLBazyak\homework\face_recognition\runs\detect\face_detection_v2\weights\best.pt')
# датафрейм с эмбеддингами
df = pd.read_pickle(r'D:\Helper\MLBazyak\homework\face_recognition\Module_2\Data\train.pkl')

Реализуем процедуру для вывода результатов теста

In [62]:
def test_case_output(img_path: str, model: YOLO = model, df: pd.DataFrame = df):
    # получаем кроп лица
    face, path = get_photo(img_path, model)
    # получаем результат распознавания
    similar, name, path, out_path = face_recognition(face, path, df)

    # визуализируем результат
    img_input = cv2.cvtColor(cv2.imread(path), cv2.COLOR_BGR2RGB)
    img_out = cv2.cvtColor(cv2.imread(out_path), cv2.COLOR_BGR2RGB)

    # создаем график, состоящий из 2 картинок, входной и выходной
    fig, ax = plt.subplots(1,2,figsize=(10,5))
    # настраиваем первое изображение
    ax[0].imshow(img_input)
    ax[0].axis('off')
    ax[0].set_title('Исходное изображение')
    # настраиваем второе изображение
    ax[1].imshow(img_out)
    ax[1].axis('off')
    ax[1].set_title(f'Результат\nИмя: {name}')

    fig.text(0.5, -0.03, f"Сходство: {similar*100:.4f}", ha='center', fontsize=12)

    plt.tight_layout()
    plt.show()

Фото из интернета 1. (политики)¶

In [ ]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test1\putin.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test1\john_paul_II.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test1\bush.jfif',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Фото из интернета 2. (актеры)¶

In [27]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test2\hawn.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test2\zeta_jones.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test2\dicaprio.jpg',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Фото из интернета 3. (спортсмены)¶

In [ ]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test3\gailey.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test3\srichaphan.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test3\richt.jpg',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Дополнительно подгруженные фотографии¶

In [ ]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test4\buharov.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test4\kanin.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test4\kpss.jpg',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Тестовый датасет 1¶

In [69]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test5\Prince_Claus_0002.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test5\Amelie_Mauresmo_0012.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test5\Michael_Phelps_0002.jpg',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Тестовый датасет 2¶

In [72]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test6\Ranil_Wickremasinghe_0001.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test6\Robert_Bonner_0001.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test6\Ricardo_Lagos_0010.jpg',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Тестовый датасет 3¶

In [75]:
# тестовые фотографии 
images = [
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test7\Trent_Lott_0001.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test7\Rick_Barnes_0001.jpg',
    r'D:\Helper\MLBazyak\homework\face_recognition\Module_3\Data\test7\Thabo_Mbeki_0002.jpg',
    ]

# проходимся по каждой фотографии
for img in images:
    test_case_output(img_path=img)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Рефлексия¶

Модель с большой уверенностью может распознать человека на фотографии, а также ее легко дообучить на нового человека, добавив несколько фотографий

Все тест кейсы пройдены успешно